package edu.berkeley.nlp.util;

import java.util.ArrayList;
import java.util.Comparator;

public class SortedList<E> extends ArrayList<E>
{

	private Comparator<? super E> comp;

	public SortedList(Comparator<? super E> comp)
	{
		this.comp = comp;
	}

	@Override
	public boolean add(E o)
	{
		//		if (super.contains(o)) return false;
		super.add(o);
		//		Collections.sort(this, comp);
		for (int index = super.size() - 2; index >= 0; --index)
		{
			E e = get(index);
			int compare = comp.compare(o, e);
			
			if (compare >= 0)
			{
				set(index + 1, o);
				break;
			}
			else
			{
				set(index + 1, e);
				if (index == 0) set(index, o);
			}
		}
		return true;
	}

	@Override
	public void add(int index, E element)
	{
		throw new UnsupportedOperationException();
	}

}
